home *** CD-ROM | disk | FTP | other *** search
/ Amiga Developer CD 2.1 / Amiga Developer CD v2.1.iso / Reference / DevCon / Washington_1988 / DevCon88.3 / IEEE / src / div0 / lattice / trapasm.s < prev    next >
Encoding:
Text File  |  1992-08-27  |  751 b   |  26 lines

  1.     include    'exec/types.i'
  2.     include    'exec/tasks.i'
  3.     xref    _localf
  4.     xref    _oldtraphandler
  5.     csect    text
  6.     xdef    _trapintercept
  7. _trapintercept:
  8.     movem.l    d0/a0,-(sp)    ; need a data register
  9.     move.l    8(sp),d0    ; get trap number
  10.     asl.l    #2,d0        ; convert in array index
  11.     lea    _localf,a0
  12.     move.l    0(a0,d0.l),d0    ; get alternate usermode vector
  13.     beq.s _if00000
  14.         cmp.l #-1,d0                                                                                                                    
  15.         beq.s _if00001
  16.             move.l    d0,14(sp)    ; modify rte address
  17. _if00001:
  18.         movem.l    (sp)+,d0/a0    ; restore d0/a0, why?
  19.         addq.l    #4,sp        ; remove trap #
  20.         rte            ; close eyes, plug ears
  21. _if00000:
  22.     movem.l    (sp)+,d0/a0    ;restore d0 contents
  23.     move.l    _oldtraphandler,-(sp)
  24.     rts            ; jump to it
  25.     end
  26.